package com.neu.questionnaire_system.controller;


import com.baomidou.mybatisplus.extension.api.R;
import com.neu.questionnaire_system.beans.ResponseEntity;
import com.neu.questionnaire_system.service.impl.QuestionnaireServiceImpl;
import com.neu.questionnaire_system.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author xingle
 * @since 2022-10-31
 */
@RestController
@CrossOrigin
@RequestMapping("/questionnaire")
public class QuestionnaireController {

    @Autowired
    private QuestionnaireServiceImpl questionnaireService;

    /**
     * created by libo 具体创建问卷，批量插入问卷中的题目以及添加问卷到数据库,map中
     * 需要包含questions题目列表和choices选项列表。以及问卷的一些信息
     * 注意（不包含个性化组卷的信息，另有接口完成这个功能）
     * @return 返回统一的对象
     */
    @RequestMapping("/insertQuestionnaire")
    public ResponseEntity insertQuestionnaire(@RequestBody Map<String,Object> map){
        return questionnaireService.insertQuestionnaire(map);
    }

    @RequestMapping("/showQuestionnaire")
    public ResponseEntity showQuestionnaire(){

        return questionnaireService.showQuestionnaire();
    }

    @RequestMapping("/deleteQuestionnaire")
    public ResponseEntity deleteQuestionnaire(@RequestBody Map<String,Object> map){
        return questionnaireService.deleteQuestionnaire(map);
    }

    @RequestMapping("/findQuestionnaire")
    public ResponseEntity findQUestionnaireById(@RequestBody Map<String,Object> map){
        return questionnaireService.findQuestionnaireById(map);
    }

    /**
     * created by libo 2022-11-8 分页查询当前用户创建的所有问卷，前端调用这个接口展示问卷
     * @param uid 当前用户的uid
     * @return 返回统一的封装对象
     */
    @RequestMapping("/queryQuesByUid")
    public ResponseEntity findQuestionnaireByUid(String uid){
        return questionnaireService.findQuestionnaireByUid(uid);
    }

    /**
     * created by libo 2022-11-8 获取给定qid的问卷的所有信息，包括其下的所有题目，预览问卷
     * @param qid 需要访问的问卷的qid
     * @return 返回封装了问卷内容的对象
     */
    @RequestMapping("/questionnaireInfo")
    public ResponseEntity preview(String qid){
        return questionnaireService.previewQuestionnaire(qid);
    }

    /**
     * created by libo 个性化组卷
     * @param map 带有个性化组卷信息以及该问卷的qid,和当前用户的uid
     * @return 统一的返回对象
     */
    @RequestMapping("/individualization")
    public ResponseEntity individualization(@RequestBody Map<String,Object> map){
        return questionnaireService.individualization(map);
    }

    /**
     * created by libo 发布问卷
     * @param map 传入需要发布的问卷的qid
     * @return 返回统一的对象
     */
    @RequestMapping("/publish")
    public ResponseEntity publish(@RequestBody Map<String,Object> map){
        return questionnaireService.publish(map);
    }

    /**
     * created by libo 动态修改问卷状态
     * @param map 包含问卷qid和问卷状态
     * @return 统一对象
     */
    @RequestMapping("/updateStatus")
    public ResponseEntity updateStatus(@RequestBody Map<String,Object> map){
        return questionnaireService.updateQuestionnaireStatus(map);
    }

    @RequestMapping("/selectQuestionnaireDetail")
    public ResponseEntity selectQuestionnaireDetail(){
        return questionnaireService.selectQuestionnaireDetail();
    }
}
